const { app, BrowserWindow, ipcMain } = require('electron');
const path = require('path');
const { net } = require('electron');

// 创建浏览器窗口
function createWindow () {
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: false,
      contextIsolation: true,
      preload: path.join(__dirname, 'preload.js')
    }
  });

  // 加载应用的 index.html
  mainWindow.loadFile('index.html');

  // 在开发环境中打开开发者工具
  // mainWindow.webContents.openDevTools();
}

// 当 Electron 完成初始化并准备创建浏览器窗口时调用此方法
app.whenReady().then(() => {
  createWindow();

  app.on('activate', function () {
    // 通常在 macOS 上，当点击 dock 图标且没有其他窗口打开时，会重新创建一个窗口
    if (BrowserWindow.getAllWindows().length === 0) createWindow();
  });
  
  // 处理来自渲染进程的网络请求
  ipcMain.handle('fetch-lottery-data', async (event, lotteryType, periodCount) => {
    try {
      // 这里应该实现从相应网站获取真实数据的逻辑
      // 由于网站结构可能变化，实际项目中需要根据网站的具体API或页面结构调整
      
      // 模拟数据（实际项目中应替换为真实数据获取逻辑）
      const mockData = [];
      const now = new Date();
      
      for (let i = 0; i < parseInt(periodCount); i++) {
        const drawDate = new Date(now);
        drawDate.setDate(drawDate.getDate() - i * 3); // 每隔3天开奖
        
        if (lotteryType === 'ssq') {
          // 生成双色球开奖号码
          const mainBalls = [];
          while (mainBalls.length < 6) {
            const randomNum = Math.floor(Math.random() * 33) + 1;
            if (!mainBalls.includes(randomNum)) {
              mainBalls.push(randomNum);
            }
          }
          mainBalls.sort((a, b) => a - b);
          
          const specialBalls = [Math.floor(Math.random() * 16) + 1];
          
          mockData.push({
            period: `2023${String(i + 1).padStart(3, '0')}`,
            date: drawDate.toLocaleDateString('zh-CN'),
            mainBalls: mainBalls,
            specialBalls: specialBalls
          });
        } else {
          // 生成大乐透开奖号码
          const mainBalls = [];
          while (mainBalls.length < 5) {
            const randomNum = Math.floor(Math.random() * 35) + 1;
            if (!mainBalls.includes(randomNum)) {
              mainBalls.push(randomNum);
            }
          }
          mainBalls.sort((a, b) => a - b);
          
          const specialBalls = [];
          while (specialBalls.length < 2) {
            const randomNum = Math.floor(Math.random() * 12) + 1;
            if (!specialBalls.includes(randomNum)) {
              specialBalls.push(randomNum);
            }
          }
          specialBalls.sort((a, b) => a - b);
          
          mockData.push({
            period: `23${String(i + 1).padStart(4, '0')}`,
            date: drawDate.toLocaleDateString('zh-CN'),
            mainBalls: mainBalls,
            specialBalls: specialBalls
          });
        }
      }
      
      return { success: true, data: mockData };
    } catch (error) {
      return { success: false, error: error.message };
    }
  });
});

// 除了 macOS 外，当所有窗口都被关闭的时候退出程序
app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit();
});